1. Field of the Invention
The present invention relates to a system, method, and program for updating code in a first and second controllers.
2. Description of the Related Art
In prior art storage systems, one or more host computers access a storage space maintained in a storage device through a storage controller. In mass storage systems, the storage device may comprise one or more Direct Access Storage Devices (DASDs), comprised of interconnected hard disk drives. The storage controller manages the flow of data from host systems to DASDs. Host systems view the physical storage space as a partition of Logical Unit Numbers (LUNs). The hosts will submit input/output (I/O) commands to a particular LUN, and the storage controller will translate the target LUN to a physical storage area.
To avoid total system failure in the event that one system component fails, storage controller subsystems incorporate redundant hardware components. For instance, one typical prior art storage subsystem includes multiple storage controller processors to provide hosts multiple paths to the same DASD and LUNs. In the event that one storage controller path fails, the path to the other storage controller can be used to access the DASD.
In high end storage controllers, such as the International Business Machines Corporation (IBM) 3990 and Enterprise System Storage Server,** a host may send an input/output (I/O) command to any host or controller 0I/O adaptor in the subsystem and the I/O adaptor would then route the I/O to the controller handling the target LUN of that I/O operation. With such prior art high end systems, the host does not need to know the controller that is primarily managing a particular LUN because the controllers include the interface circuitry to route the I/O to the primary controller. Such solutions require expensive interface hardware that is not feasible for lower cost storage subsystems. Lower cost storage subsystems also use two controllers, such as Small Computer System Interface (SCSI) or Fibre Channel controllers, that provide separate paths to the same DASD. **Windows and NT are registered trademarks of Microsoft Corporation; AIX and OS/390 are registered trademarks of IBM and MVS and Fibre Channel Raid Storage Controller are trademarks of IBM.
In the prior art, to update the firmware or code in a subsystem comprised of multiple controllers, the entire subsystem is taken off-line while the firmware in both controllers is updated. The firmware is typically maintained in a programmable memory such as a flash memory. Once the programmable memory of the controllers is updated, the system may be brought back online. One disadvantage of this approach is that the host will not be able to access the data from the DASD during the firmware update. In many cases, the host may have a short timeout period causing a timeout when it cannot access data while the controllers are updating their firmware. To recover from such timeouts, the host will have to reboot, thereby disrupting clients accessing data through the subsystem. Further, even if the upgrade operations do not cause the host to timeout, host applications are still denied access to data during the upgrade to the new firmware. Thus, the operation of loading new firmware can be quite disruptive to all hosts and their attached clients accessing data through the subsystem.
Thus, there is a need in the art to provide an improved methodology for updating firmware code in controllers.